The present invention involves the selection of jobs for execution in manufacturing processes from declarative descriptions of the environment in which the processes are performed.
Within manufacturing environments, the questions of deciding what products to produce (assuming the environment is capable of producing more than a single product), when to produce them, how much of each to produce and whether to accept new orders for different products must all be weighed against the realities of the various constraints imposed upon and within the environment. To assist in making such decisions, computational tools may be used to determine which products to produce and/or when to produce them. These tools are sometimes divided into two aspects: planning tools and scheduling tools. The term planning is used to identify those activities, and the relations therebetween, required to accomplish a set of goals. Scheduling then becomes the assignment of specific resources and time windows to the actions identified in the plan.
Although the use of such tools may assist in answering the questions posed, alone they cannot be relied upon to produce useful results. For example, if such tools are used in a static fashion, i.e., so that they are not used in a manner that accurately reflects the changes in the environment being experienced, they cannot be expected to produce reliable results. Further, such tools will not necessarily yield workflows that reflect detailed sets of instructions for how to assemble the products of interest. That is, where workflow specify the order in which various resources are to be employed to produce the products and, hence, act as assembly instructions for the product, scheduling tools may only generate worklists for individual items of equipment. What is needed therefore is an improved scheme for addressing the above-described needs of manufacturing environments.
An adaptive workflow system that includes a scheduling engine and a workflow engine is provided. The scheduling engine may be configured to build workflows that describe sequences of tasks to be performed in a dynamically changing environment. The workflow engine may be configured to monitor the execution of the tasks within the environment and to provide the scheduling engine with information regarding deviations of task executions from the workflows. When such deviations (e.g., changes in the environment) are detected and/or when new tasks are added, the workflow engine may trigger the scheduling engine to rebuild the workflows for as yet uncompleted tasks. The workflows may define start and end times, etc. for the tasks.
In general, the tasks may be a set of job requests to be processed in a manufacturing environment (e.g., a print shop). In such a scheme, the scheduling engine may be made up of an aggregate planner and a detailed scheduler. Aggregate plans that describe which jobs to do and how to do them may be first made and then passed to the detailed scheduler for timelining, and specific resource allocation, etc.
In some cases, the manufacturing environment may be represented by a declarative model that describes the bills of materials and bills of resources for the manufacturing environment. Alternatively, the manufacturing environment may be represented by a model that includes the resources consumed by the job requests.
Ultimately, workflows may be generated from the detailed schedule. The workflows represent procedural steps to accomplish the process to be performed within the manufacturing environment. In such cases, generating a workflow may be accomplished by choosing one or more of a number of paths through the model (e.g., using the hierarchical aggregate planning and detailed scheduling approach), each of the paths comprising an alternating series of one or more of the state nodes and one or more of the task nodes with any predecessor state node in one of the paths representing a precondition for a subsequent task node along the one of the paths and any following state node of the subsequent task node along the one of the paths representing a result of applying one or more actions that correspond to that task node.
In general though, any of a number of model representations may be used. Thus, generating a workflow may be accomplished by choosing any one of a plurality of feasible routes for completion of the process defined by the model; by choosing an optimal one of a plurality of routes for completion of the process defined by the model; or by choosing one of a plurality of routes defined by the model according to one or more user-defined criteria for route selection. The routes so chosen may define bills of resources for the real world environment defined by the model. New workflows may be generated in response to an update to the model.
Further details of these and other embodiments will be discussed below, however, it should be remembered that these are merely examples of implementations of the present invention.